home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / ien / ien-146 < prev    next >
Text File  |  1988-12-01  |  27KB  |  650 lines

  1.  
  2.  
  3.            FLYING PACKET RADIOS AND NETWORK PARTITIONS
  4.                             IEN #146
  5.                             PRTN #292
  6.                           Radia Perlman
  7.                   Bolt Beranek and Newman, Inc.
  8.                             June 1980
  9.  
  10.  
  11. I. INTRODUCTION
  12.  
  13. As described in IEN 110, "Internet Addressing and Naming in a
  14. Tactical Environment", a network can become partitioned into two
  15. or more pieces.  Assuming some of these pieces are still
  16. connected to the catenet, we would like the catenet to be able to
  17. efficiently deliver packets to a host in any such piece.  Such a
  18. capability in the catenet could additionally be utilized by a
  19. scheme for delivering intranet traffic across partitions in a
  20. partitioned network.
  21.  
  22. Another problem is known as the flying packet radio problem, in
  23. which there are two ground PR nets and an airborne PR,
  24. potentially in radio contact with either or both ground nets.
  25. The problem is to route internet packets to that airborne PR.
  26.  
  27. In IEN #120 I presented a design for network partitioning and for
  28. the flying packet radio problem.  This paper differs from IEN
  29. #120 in several ways:
  30.  
  31. 1) In this paper there is a simpler solution proposed for finding
  32. the host/partition correspondence.
  33.  
  34. 2) In this paper an argument is made for doing the link state
  35. routing algorithm in a straight per gateway (rather than per net)
  36. computation.  This is more costly, since there are more gateways
  37. than nets, but it is more straightforward to implement, and is
  38. more flexible.
  39.  
  40. 3) A different solution is proposed for the flying packet radio
  41. problem.  The solution in IEN #120 was an easily implementable
  42. one that could be immediately implemented.  The solution in this
  43. paper depends on the rest of the design being implemented, but is
  44. a less costly solution.
  45.  
  46. 4) In IEN #135, Carl Sunshine and Jon Postel present an
  47. alternative approach to the flying packet radio problem.  A
  48. comparison of the two approaches is made in this paper.
  49.  
  50. The currently implemented gateway routing algorithm is based on
  51. the original ARPANET algorithm.  To efficiently provide for
  52. routing to network partitions, routing must be based on a link
  53. state routing scheme.  The necessity for a link state routing
  54. scheme was demonstrated in IEN #120.  In this paper I will merely
  55. present the design.
  56.  
  57.  
  58.                               - 1 -
  59.  
  60.  
  61.  
  62. II.  LINK STATE ROUTING
  63.  
  64. A "link state" routing scheme is one in which the nodes computing
  65. the routing have complete knowledge of the state of all the links
  66. in the network.  All nodes monitor the state of their links to
  67. their neighbors, and report this information to the nodes that
  68. compute routing.  In a totally distributed algorithm, all nodes
  69. compute routing, so that means that all nodes must broadcast the
  70. state of their links to every other node.
  71.  
  72. A link state scheme is currently in operation in the ARPANET.  An
  73. alternative to a link state scheme is the algorithm that used to
  74. be in operation in the ARPANET, and is currently implemented in
  75. the gateways.  In the old-style ARPANET routing algorithm, nodes
  76. give to their neighbors a vector of their distance to all
  77. destinations, and a node compiles its own distance vector by
  78. taking the minimum distance of its distance to a given neighbor,
  79. plus that neighbor's distance to the destination.  The advantage
  80. of a link state scheme over the old-style ARPANET scheme is that
  81. a link state scheme is more flexible, since nodes have more
  82. information.
  83.  
  84. The most straightforward link state scheme would be one where
  85. each gateway computes routes from itself to all other gateways.
  86. This design was specified in IEN #24 (also known as PRTN #242).
  87. Let us call that scheme the per-gateway scheme.
  88.  
  89. In IEN #120 (PRTN #279) I proposed a modification to the
  90. per-gateway design, wherein gateways computed routes to
  91. destination networks rather than destination gateways.  Let us
  92. call that scheme the per-network scheme.  The per-network scheme
  93. is computationally less costly for the gateways, since there are
  94. more gateways than nets.  However, there is a problem with the
  95. per-net scheme.  The problem is that in the per-net scheme,
  96. different costs cannot be assigned to different pairs of gateways
  97. on the same network.  And in networks like the packet radio net,
  98. or the ARPANET, the delay between very distant gateways on the
  99. same net can be very different from the delay between close
  100. gateways on that net.  Currently there is no mechanism for
  101. measuring delays between neighbor gateways, and the cost function
  102. is the simplest possible -- number of hops.  However, at some
  103. point in the future we might want to use a more sophisticated
  104. cost function.  Thus I recommend abandoning the per-network
  105. approach and going to the straightforward per-gateway approach.
  106.  
  107. Currently there are few enough gateways so the per-gateway
  108. approach would not be a problem.  If in the future there are too
  109. many gateways to make this approach feasible (more than 100),
  110. there are other approaches that can be taken.  For example,
  111. instead of a totally distributed algorithm, there can be a few
  112. "routing centers" distributed around the catenet.  These routing
  113. centers would be large enough machines so that they would not
  114. have space problems with computations involving hundreds of
  115.  
  116.  
  117.                               - 2 -
  118.  
  119.  
  120.  
  121. nodes, and do not have to be gateways, so the time involved in
  122. computing routes would not degrade gateway forwarding
  123. performance.  This would make the link state scheme less costly,
  124. since gateways would only have to report the state of their links
  125. to the routing centers, not to all gateways.
  126.  
  127. If the number of gateways was truly huge (more than a few
  128. hundred), it would not be practical even for a large routing
  129. center to compute routes for a network that large.  In that case
  130. a heirarchical approach, of breaking the net into subnetworks and
  131. treating the network of subnetworks as an approximation to the
  132. entire network should be used.  This approach has been taken in
  133. the multistation packet radio design, which is a design to
  134. accomodate a very large network of PRs.
  135.  
  136. If it is decided that the capability of assigning different costs
  137. to different pairs of gateway links is not essential, the
  138. per-network scheme might be adopted, so I will include the
  139. description here.
  140.  
  141.  
  142. III. TERMINOLOGY
  143.  
  144. 1) neighbor gateways--two gateways attached to the same network
  145.  
  146. 2) functioning neighbor gateways--neighbor gateways able to
  147. communicate with each other over their common network
  148.  
  149. 3) attached network--a network physically attached to a gateway,
  150. and with which the gateway can communicate directly (not through
  151. another gateway)
  152.  
  153. 4) neighbor network of gateway G--an attached network of a
  154. functioning neighbor gateway of G, excluding attached networks of
  155. G
  156.  
  157.  
  158. IV. TABLES TO BE MAINTAINED BY EACH GATEWAY
  159.  
  160. 1) a list of attached networks--This list is relatively constant
  161. and is updated by a gateway when it notices a network interface
  162. is down or for some other reason the gateway is incapable of
  163. communicating with an attached network.  Keeping this table
  164. updated is solely the responsibility of each gateway, and does
  165. not require intergateway communication.
  166.  
  167. 2) a table of all gateways and their attached networks--This
  168. table is maintained by intergateway communication -- gateways
  169. give copies of their table 1 to all other gateways.  The table of
  170. all gateways never shrinks (a down gateway is assumed to exist
  171. but be unreachable).
  172.  
  173.  
  174.  
  175.  
  176.                               - 3 -
  177.  
  178.  
  179.  
  180. 3) a table of link states to neighbor gateways--This table in
  181. gateway G specifies, for each neighbor gateway G1, over which
  182. common networks G and G1 can communicate.  This table is updated
  183. by G periodically bouncing packets off each neighbor gateway from
  184. which it has not recently received traffic.  Note that I refer to
  185. two gateways as neighbor gateways even if they cannot
  186. (temporarily, hopefully) communicate with each other.
  187.  
  188. 4) a list of neighbor networks--This list is derived from the
  189. table of link states to neighbor gateways and the list of
  190. gateways with attached networks (tables 3 and 2).
  191.  
  192. 5) total link state--This is a table of all gateways and the
  193. state of their links to their neighbor gateways.  This table is
  194. compiled from intergateway communication.  When a gateway notices
  195. that its table of attached networks, or its table of link states
  196. to neighbor gateways (tables 2 and 3) changes, that gateway
  197. efficiently broadcasts this information to all other gateways in
  198. the catenet.  To minimize numbers of reports when a link is
  199. flaky, a link on an attached network must be up continuously for
  200. some amount of time before its state is considered to change from
  201. down to up and trigger a link state report.
  202.  
  203. 6) shortest distance matrix--This is a data structure from which
  204. routing decisions can be made directly.  It is computed from the
  205. other tables.  It is described more fully in part V.
  206.  
  207.  
  208. V. ROUTING COMPUTATION
  209.  
  210. 5.1 Per-Network Scheme
  211.  
  212. A gateway, using the tables described above, constructs a
  213. connectivity matrix whose rows and columns represent networks,
  214. and whose entries are 1 if any gateways claim to be attached to
  215. both networks, and infinity otherwise.  Then the gateway *'s that
  216. matrix to construct a shortest distance matrix.  (The operation
  217. "*" consists of "multiplying" a matrix by itself, using the
  218. operations min and plus instead of plus and times, until the
  219. result stabilizes.  This is a well-known algorithm.)  The gateway
  220. then looks in the shortest distance matrix for the neighbor
  221. network (or set of such) closest to the destination network, and
  222. chooses a functioning neighbor gateway (or set of such) attached
  223. to that neighbor network, for forwarding packets to that
  224. destination network.
  225.  
  226. If the cost function assigns different costs to different
  227. networks, then instead of merely putting a "1" in the
  228. connectivity matrix where there is connectivity, the gateway does
  229. the following.  If the assigned cost (a constant) of network A is
  230. C(a) and the assigned cost of network B is C(b), then in the
  231. connectivity matrix for the entry [A,B], deposit C[a].  In the
  232. entry [B,A] deposit C[b].  In other words, assign the cost of the
  233. network you are leaving.
  234.  
  235.                               - 4 -
  236.  
  237.  
  238.  
  239. When a link state report changes the state of an entry in the
  240. connectivity matrix (remember, all gateways connecting two
  241. networks have to go down before an entry changes to infinity), a
  242. gateway must recompute the distance matrix.
  243.  
  244. This design is a slight modification of the design presented in
  245. "Gateway Routing", by Radia Perlman (PRTN #242, IEN #24).  The
  246. modification is that the indices of the matrix are networks, not
  247. gateways.  The purpose of this modification is to make the size
  248. of the matrix smaller, an important modification given that in
  249. the catenet there are many more gateways than networks.  There
  250. are aspects to the scheme that are irrelevant to a discussion of
  251. how to solve the network partition problem, such as sequence
  252. numbers for link state reports, etc.  The purpose of this paper
  253. is to direct a correct approach to the design, and not to present
  254. an implementation specification.  Thus an implementer should read
  255. PRTN 242 to discover the details of a link state algorithm that
  256. were not relevant for presentation here.
  257.  
  258. Note that an alternative to *'ing the matrix is to use the scheme
  259. that the ARPANET has switched over to, which is a link state
  260. scheme in which a shortest path routing tree is constructed from
  261. the connectivity information.  The new ARPANET scheme is less
  262. costly to maintain as links change state.  Its disadvantages are
  263. that it precludes load splitting, probably a very important
  264. problem in the case of the catenet, and is probably a little
  265. harder to implement.  Since links will not change state very
  266. often, the author favors the overhead of the matrix *'ing scheme
  267. over the disadvantages of the ARPANET scheme.  However, this
  268. decision is separable from the rest of the design and can be
  269. decided either way at a later time.
  270.  
  271. 5.2 Per-Gateway Scheme
  272.  
  273. This scheme is more straightforward.  The rows and columns in the
  274. connectivity matrix represent gateways.  If different costs are
  275. assigned to different gateway links on the same network, gateways
  276. would report the cost of their links to their neighbors in their
  277. link state reports, and this cost would be deposited into the
  278. entries in the connectivity matrix.
  279.  
  280. As in the per-net scheme, the connectivity matrix could be *'ed,
  281. or the Dijkstra algorithm could be applied.
  282.  
  283.  
  284. VI. DETECTING THAT A NETWORK HAS PARTITIONED
  285.  
  286. Now we look at the problem of network partitions.  In the design
  287. presented so far there is enough information for any gateway to
  288. detect a partitioned network and to isolate groups of gateways on
  289. each partition:  A gateway G knows that network N is partitioned
  290. if there are two sets of gateways, set Q and set R, such that all
  291. gateways in both sets report they are attached to network N, but
  292.  
  293.  
  294.                               - 5 -
  295.  
  296.  
  297.  
  298. there are no two-way links between a member of set Q and a member
  299. of set R via network N.  This information is derived
  300. independently by each gateway from the table of all gateways and
  301. their attached networks, and from the table of total link state
  302. (tables 2 and 5).
  303.  
  304.  
  305. VII. DERIVING A NAME FOR EACH PARTITION
  306.  
  307. It is necessary to expand the internet header to allow a field
  308. for identifying a network partition.  The reason for this is to
  309. avoid the necessity for every gateway on a packet's route to
  310. discover to which partition the packet should be sent.
  311.  
  312. The partition name must give sufficient information so that every
  313. gateway can make the proper routing decisions to send a packet to
  314. that partition, based on its tables of total link state and
  315. gateways/attached nets (tables 5 and 2).
  316.  
  317. The following schemes for naming a partition are all done
  318. independently by all gateways, as opposed to having some central
  319. authority choose a name and inform all gateways, or having a
  320. group of gateways decide on a name "by committee".
  321.  
  322. One method of identifying a partition is to use the name of any
  323. member gateway of the partition.  It will not matter if two
  324. gateways choose different names for the same partition.  Since
  325. the sets of gateways involved in the network partitions are
  326. disjoint, any member of the set identifies the set.
  327.  
  328. Another method is to list (either by an explicit list or a bit
  329. table) the set of gateways that make up that partition.  This is
  330. unnecessarily descriptive, since the list of gateways is
  331. derivable from a single member of the set.  And it is a less
  332. robust scheme, because any change to the partition (a gateway
  333. going down, coming up, or the net partitioning into more pieces)
  334. can confuse a gateway trying to route to that set of gateways.
  335. In the first method, if the partition changes, the packet will be
  336. routed unambiguously to whatever partition the named gateway is
  337. in.  Of course, if the named gateway goes down, the packet
  338. becomes undeliverable, but that is easier to deal with than
  339. trying to deliver a packet to a set of gateways that overlaps two
  340. partitions.
  341.  
  342. A third method is for each gateway to number partitions from 1 to
  343. the number of partitions, ordered by, say, the highest numbered
  344. gateway in each partition.  This method uses fewer bits in the
  345. packet header but is a much less robust scheme.  With gateways
  346. having slightly differing information, partition names have
  347. different meanings.  Also, partitions can switch names suddenly.
  348. For instance, a net can be partitioned into 2 pieces, numbered 1
  349. and 2, and, assuming the highest numbered gateway was down, and
  350. comes up in partition 2, partitions 1 and 2 now switch
  351. identities.
  352.  
  353.                               - 6 -
  354.  
  355.  
  356.  
  357. Thus the recommended method of identifying a partition is the
  358. first method.
  359.  
  360.  
  361. VIII. FIGURING OUT WHICH PARTITION A HOST IS IN
  362.  
  363. This is the aspect of the design for which I did not find the
  364. design presented in IEN #120 completely satisfying.  Here is a
  365. better approach.
  366.  
  367. Important goals are to:
  368.  
  369. 1) Shield gateways from state information such as which hosts are
  370. in which partitions.
  371.  
  372. 2) Shield hosts from the necessity of knowing much about the
  373. structure of the catenet.  In particular, since hosts do not
  374. receive gateway link state reports, they do not know which
  375. gateways and links are up, do not dynamically discover new
  376. gateways and networks, and thus cannot intelligently provide a
  377. complete source route on a packet.  And requirements for
  378. sophistication on the part of the host means adding that
  379. sophistication to many different implementations.
  380.  
  381. The proposed solution is that:
  382.  
  383. 1) If a gateway receives a packet for a partitioned destination
  384. network, with no partition name filled in in the packet header,
  385. that gateway duplicates the packet, sending a copy of the packet
  386. to each partition.  (Subsequent gateways will not duplicate the
  387. packet because the first gateway would have supplied partition
  388. names on the packets it sent out.)
  389.  
  390. 2) Gateways on a partitioned network fill in their IDs in packets
  391. leaving the partitioned network.
  392.  
  393. 3) Hosts communicating with a host on a partitioned network can
  394. either ignore the whole network partitioning issue, or copy the
  395. partition name from packets returning from the host on the
  396. partitioned network.  If hosts ignore the partitioning issue, the
  397. cost is duplicated packets.  If hosts choose to copy the
  398. information, they must keep state information per host on that
  399. partitioned network, and they must notice when that information
  400. becomes out of date (if packets fail to reach their destination,
  401. the host should erase its knowledge of which partition the packet
  402. was routed to, since the other host might have moved to a
  403. different partition).
  404.  
  405. One advantage of this design is that gateways can be completely
  406. sheltered from per-host state information.  They already detect
  407. partitioned networks, so the only added work is duplicating
  408. packets and filling in partition names.  Another advantage is
  409. that hosts can either be totally oblivious of the whole issue, at
  410.  
  411.  
  412.                               - 7 -
  413.  
  414.  
  415.  
  416. the expense of duplicated packets, or they can, without much
  417. work, obtain the information of the proper partition for a given
  418. host.  And the decision as to which course to take can be taken
  419. independently by each host.
  420.  
  421.  
  422.  
  423. IX. ROUTING PACKETS TO THE CORRECT PARTITION
  424.  
  425. As stated above, a gateway G, distant from partitioned network N,
  426. must know which gateways are involved in a partition before G can
  427. correctly route a packet -- it might have to make a different
  428. routing decision for one partition than for another one.
  429.  
  430. When G detects a network has become partitioned into n pieces, G
  431. must add n-1 rows and columns to its shortest distance matrix,
  432. i.e., it treats each partition as a separate network.  It is an
  433. implementation detail, and not a difficult one, to ensure that
  434. the gateway understands the meaning of each row and column.  And
  435. given that the gateway understands the meaning of each row and
  436. column, it is easy for it to fill in the connectivity matrix from
  437. its table of total link state.  The computation is done exactly
  438. as in the nonpartitioned case.
  439.  
  440.  
  441. X.  FLYING PACKET RADIOS
  442.  
  443. In IEN #110, Dr. Vinton Cerf raises the following problem.  An
  444. airborne PR flies above two ground nets, A, and B.  At times the
  445. airplane PR is in radio contact of A, B, both nets, or neither
  446. ground net.  The problem is for hosts in the catenet to send
  447. packets to the airplane PR.  They cannot simply fill in "A" or
  448. "B" as the destination network because that might be incorrect.
  449. And if they did somehow know the proper net at the time, higher
  450. level protocols would get confused by a changing net number, and
  451. be unable to match packets to an existing connection.
  452.  
  453. In IEN #120 I presented a scheme for solving this problem that
  454. could be implemented without the rest of the network partitioning
  455. design.  That scheme involved assigning a virtual net number to
  456. each airplane PR.  Gateways on the ground nets A and B would have
  457. half gateways associated with each virtual net, that "pinged" the
  458. associated airplane PR occasionally to see if it was reachable.
  459. The cost of this solution is traffic overhead in the ground nets,
  460. from all the pinging, and extra net numbers for each airplane PR.
  461. However, it is easy to implement.
  462.  
  463. I will present here a solution that is much cheaper, but depends
  464. on the rest of the design in the paper being adopted.
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.                               - 8 -
  472.  
  473.  
  474.  
  475. The solution is that:
  476.  
  477. 1) A single virtual net number, P, is assigned to include all
  478. airborne PRs.
  479.  
  480. 2) Gateways on A and B always report that they are connected to
  481. "net P" and that their links to their "neighbors" on the other
  482. ground net, via net P, are always down.  (They could report their
  483. link via net P to be up if some airplane PR connects the two
  484. ground nets so that they actually can reach the other ground
  485. gateways, but it is simpler to declare that link always down, and
  486. it will avoid forcing the airborne PRs to forward much traffic.)
  487. Gateways on A report their links to the other gateways on A, via
  488. net P, to be in the same state as the actual links via net A.
  489. The gateways on net B do likewise.
  490.  
  491. 3) Thus P will look to the rest of the catenet like a partitioned
  492. net.  Consequently, gateways receiving packets for P with a blank
  493. partition name will duplicate the packet, sending a copy to each
  494. "partition" of P, i.e., a copy to net A and a copy to net B.  And
  495. gateways on nets A and B receiving packets from "P", will fill in
  496. their IDs as the "partition name" of P.
  497.  
  498. 4) Hosts talking to an airborne PR can either ingore the whole
  499. problem and let its packets get duplicated, or copy the proper
  500. "partition name" in packets it receives from the airplane.
  501. However, since airplanes are liable to switch nets quickly, the
  502. information is liable to become quickly out of date.  Thus it is
  503. probably better (assuming there are only 2 ground nets) to live
  504. with the duplicated packets, ensuring delivery (assuming the
  505. airplane PR is reachable via one of the ground nets).
  506.  
  507. The cost of this approach is the implementation of all the rest
  508. of the network partitioning design presented in this paper, plus
  509. a single virtual net number and duplicated packets to the
  510. airplane PRs (or hosts copying the information provided in
  511. packets from the airplane PRs).
  512.  
  513.  
  514. XI.  COMPARISON WITH IEN 135
  515.  
  516.  
  517. In IEN #135, Carl Sunshine and Jon Postel present an alternative
  518. approach to the flying packet radio problem.  Their approach is:
  519.  
  520. 1) A virtual net number is assigned for all airplane PRs.
  521.  
  522. 2) Airplane PRs have the responsibility for ascertaining their
  523. current network location, and reporting this information to a
  524. global database.  (There can be multiple global databases for
  525. reliability.)
  526.  
  527.  
  528.  
  529.  
  530.                               - 9 -
  531.  
  532.  
  533.  
  534. 3) Hosts wishing to communicate with an airplane PR request their
  535. location from the global database, which furnishes them with a
  536. single level source route to write into the packet header.  The
  537. source route consists of both a net number (as in ground net A or
  538. ground net B, depending on which net the airplane in question is
  539. currently in radio connectivity of) and a local address on that
  540. net, called a "forwarder".  The purpose of the "forwarder" is
  541. merely to fit this into the already existing mechanism of source
  542. routing, which requires a full internet address.  It would be
  543. most convenient to have as the ID of the "forwarder" the same ID
  544. as the destination, so that the destination would be net P, host
  545. XXX, and the source route would be net A (or B), host XXX.
  546.  
  547. The authors propose this scheme over the one presented in IEN
  548. #120 (and the one presented here) in order to save the gateways
  549. from dealing with the problem.
  550.  
  551. Costs of the scheme in IEN #135 are:
  552.  
  553. 1) Maintaining a global database is complex and costly.
  554.  
  555. 2) The airplane PR must ascertain its true net and report this
  556. information to the global database.  There is no mechanism
  557. currently designed into packet radio networks to make this easy,
  558. and certainly no mechanism for alerting the airplane PR that it
  559. is "about to leave" a net, as suggested in IEN #135.
  560.  
  561. 3) Hosts wishing to communicate with an airplane PR must first
  562. contact the global database.  This is extra code that must be
  563. implemented in order for the host to communicate at all with the
  564. airplane PR.  And it must be implemented in every host that might
  565. be in contact with an airplane PR.
  566.  
  567. 4) Airplane PRs are liable to change nets so quickly that by the
  568. time the airplane discovers it has changed nets, contacted the
  569. global database, the host has queried the database, and the host
  570. has received a reply from the database, the airplane PR has very
  571. likely changed nets.
  572.  
  573. The costs of the scheme presented in this paper are:
  574.  
  575. 1) Implementing a link state routing algorithm for gateways.  A
  576. link state algorithm requires more control traffic and more
  577. computation than the old-style ARPANET algorithm.  It requires a
  578. recoding of the gateways, since they currently have implemented
  579. the old-style ARPANET algorithm.  However, the extra overhead of
  580. the link state scheme is not that bad, and there are
  581. possibilities for decreasing the overhead further (for instance,
  582. by declaring a set of gateways all connected to the same networks
  583. and all in contact with each other as a "group" and having a
  584. single member of the group report status information for the
  585. entire group).  And the link state scheme gives needed
  586. flexibility for other internet routing problems, for instance
  587. extended routing (including access control).
  588.  
  589.                              - 10 -
  590.  
  591.  
  592.  
  593. 2) The rest of the partitioning design, all of which is minor,
  594. including:
  595.    a) having gateways detect a partition and compute routing
  596.       accordingly
  597.    b) having gateways receiving packets for a partitioned network
  598.       duplicate the packets
  599.    c) having gateways on the partitioned net fill in the
  600.       partition name on outgoing packets
  601.    d) extra packets or having hosts communicating with a host on
  602.       a partitioned net copy the partition name from incoming
  603.       packets
  604.  
  605. 3) For the flying packet radios, a single virtual net number.
  606.  
  607.  
  608. XII. CONCLUSIONS
  609.  
  610. A link state scheme, as originally presented in PRTN 242,
  611. modified as presented in part IV of this paper should be the
  612. basis of internet routing.
  613.  
  614. The internet header should include a field long enough for a
  615. gateway ID, for the purpose of specifying a partition name.  A
  616. partition name is the ID of any member gateway on that partition.
  617.  
  618. The first gateway that handles a packet checks to see if it is
  619. addressed to a partitioned network.  If so, and if the partition
  620. name field in the internet header is blank, the gateway
  621. duplicates the packet for each partition, and sends a copy to
  622. each partition (filling in the partition name on each copy).
  623.  
  624. When a host receives packets with a partition name filled in, it
  625. can copy that information in a per host table, being careful to
  626. erase that information if packets fail to reach the destination.
  627. Hosts that choose not to implement that will cause nothing more
  628. serious than duplicated packets.
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.                              - 11 -
  649.  
  650.